/**
 * 日期工具类
 */
package com.cnfangmao.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class DateUtil {
	public final static int DATE_YEAR=1;
	public final static int DATE_MONTH=2;
	public final static int DATE_DAY=3;


	/****
	 * 给一个日期加减天数
	 * @param date
	 * @param Unit
	 * @param value
	 * @return
	 */
	public static Date DateAdd(Date date,int Unit,int value)
	{
		Date result=null;
		if(date==null)
		{
			return result;
		}

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		switch(Unit)
		{
			case DATE_YEAR:
				calendar.add(Calendar.YEAR,value);
				break;
			case DATE_MONTH:
				calendar.add(Calendar.MONTH,value);
				break;
			case DATE_DAY:
				calendar.add(Calendar.DAY_OF_YEAR,value);
				break;
		}
		result=calendar.getTime();
		return result;
	}
	
	/**
	* 日期转换成字符串
	* @param date 
	* @return str
	*/
	public static String DateToStr(Date date)
	{
	   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	   String str = format.format(date);
	   return str;
	} 
	
	/**
	* 日期转换成字符串
	* @param date 
	* @return str
	*/
	public static String DateToStrWithNoTime(Date date)
	{
	   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
	   String str = format.format(date);
	   return str;
	} 

	/**
	* 日期转换成字符串(中文)
	* @param date 
	* @return str
	*/
	public static String DateToStrWithNoTime4Chinese(Date date)
	{
	   SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
	   String str = format.format(date);
	   return str;
	} 
	/**
	* 日期转换成字符串
	* @param date 
	* @return str
	*/
	public static String DateToStrWithSpecificFormat(Date date,String strFormat)
	{
	   SimpleDateFormat format = new SimpleDateFormat(strFormat);
	   String str = format.format(date);
	   return str;
	} 
	/**
	* 字符串转换成日期
	* @param str
	* @return date
	*/
	public static Date StrToDate(String str) 
	{
	   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	   Date date = null;
	   
	   try 
	   {
		   date = format.parse(str);
	   } 
	   catch (ParseException e) 
	   {
		   e.printStackTrace();
	   }
	   
	   return date;
	}
	
	/**
	* 字符串转换成日期
	* @param str
	* @return date
	*/
	public static Date StrToDateWithNoTime(String str) 
	{
	   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
	   Date date = null;
	   
	   try 
	   {
		   date = format.parse(str);
	   } 
	   catch (ParseException e) 
	   {
		   e.printStackTrace();
	   }
	   
	   return date;
	}
	
	/**
	* 字符串转换成日期
	* @param str
	* @return date
	*/
	public static Date StrToDateWithSpecificFormat(String str,String strFormat) 
	{
	   SimpleDateFormat format = new SimpleDateFormat(strFormat);
	   Date date = null;
	   
	   try 
	   {
		   date = format.parse(str);
	   } 
	   catch (ParseException e) 
	   {
		   e.printStackTrace();
	   }
	   
	   return date;
	}
	

    /****
     * 计算两个日期相差的天数
     * @param date1
     * @param date2
     * @return
     */
    public static int DaysBetweenOfTwoDays(Date date1,Date date2)
    {
        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000*3600*24)));
    }
}
